package com.n9.qq.android.login.tlv;

import com.n9.qq.util.Crypter;
import com.n9.qq.util.Util;
import com.n9.qq.util.Validator;

/**
 * @author ice
 * @since 2019/2/12 11:36
 */
public class Tlv0144 extends BaseTlv {
    public Tlv0144() {
        this.cmd = 0x0144;
    }

    public byte[] getData(byte[] ds0109Data, byte[] ds0124Data, byte[] ds0128Data, byte[] ds016eData, byte[] tgtgtKey) {
        byte count = 0;
        int srcDataLen = 0;

        if (Validator.hasElement(ds0109Data)) {
            srcDataLen += ds0109Data.length;
            count++;
        }
        if (Validator.hasElement(ds0124Data)) {
            srcDataLen += ds0124Data.length;
            count++;
        }
        if (Validator.hasElement(ds0128Data)) {
            srcDataLen += ds0128Data.length;
            count++;
        }
        if (Validator.hasElement(ds016eData)) {
            srcDataLen += ds016eData.length;
            count++;
        }

        byte[] srcData = new byte[srcDataLen + 2];
        Util.int16_to_buf(srcData, 0, count);

        int index = 2;
        if (Validator.hasElement(ds0109Data)) {
            System.arraycopy(ds0109Data, 0, srcData, index, ds0109Data.length);
            index += ds0109Data.length;
        }
        if (Validator.hasElement(ds0124Data)) {
            System.arraycopy(ds0124Data, 0, srcData, index, ds0124Data.length);
            index += ds0124Data.length;
        }
        if (Validator.hasElement(ds0128Data)) {
            System.arraycopy(ds0128Data, 0, srcData, index, ds0128Data.length);
            index += ds0128Data.length;
        }
        if (Validator.hasElement(ds016eData)) {
            System.arraycopy(ds016eData, 0, srcData, index, ds016eData.length);
        }

        byte[] enData = new Crypter().encrypt(srcData, tgtgtKey);
        return this.getBufData(enData);
    }


}
